/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package consultas;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.sql.CallableStatement;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpSession;



public class funciones {
    private String usuario="";

    //private boolean usuarioLogeado=false;
    public boolean usuarioconectadoOK=false;
 
    public String nombre_imagen; //nombre imagen
    public int recordarme=0;
    //public boolean usuarioconectadoOK=true;

    public String itemname; //nombre imagen

    public String nom_producto;
    public String precio_producto;
    public String num_boletos;
    public String categoria;
    public String fecha_sorteo;
    public String descripcion; //nombre descripcion
    public HttpSession sesionOk;
    public int okacceso=0;

    public String palabras_clave;
    public String usuario_sub;
    public String cookieUsu;
    public String cookiePass;
    
    //Para insertar necesito consultar:
    private String id_usuario;
    private String id_producto;


    
    public List<Producto> listaProductos = new ArrayList<Producto>();
    
    public funciones(){
        conexion conex = new conexion();//variable que abre la conexion
	ResultSet rs = null;//variable que devuelve el resultado
        
    }
    
    //GETTERS
    public String getUsuario(){
        return this.usuario;
    }
    public boolean getUsuarioConectadoOk(){
        return this.usuarioconectadoOK;
    }
    public int getOkAcceso(){
        return this.okacceso;
    }
    /*public boolean getUsuarioLogeado(){
        return this.usuarioLogeado;
    }*/
    
    //SETTERS
    public void setUsuarioConectadoOk(boolean usuarioConectado){
        this.usuarioconectadoOK = usuarioConectado;
    }
    public void setOkAcceso(int num){
        this.okacceso = num;
    }
    public void setUsuario(String x){
        usuario=x;
    }
    
    public int comprobarUsuario (String username, String password) {
        
        ResultSet rs2=null;
        String user, pass;
                    System.out.println ("voy a comprobar el username y pass");
        try {
            
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT nick, contrasena FROM usuarios;");
                    rs2=ps.executeQuery();
                    while(rs2.next()) {
                        user=rs2.getString(1);//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pass=rs2.getString(2);
                            System.out.println(user + "/"+ pass);
                            if(user.equals(username) && pass.equals(password)) {
                                okacceso=1;
                                System.out.println("OKACCESO ES IGUAL: "+okacceso);
                                usuarioconectadoOK=true;
                                System.out.println("el usuariologueado ha cambiado a:"+this.usuarioconectadoOK);
                                usuario=user;
                                break;
                            }else{
                                if(user.equals(username) && !pass.equals(password)){
                                    okacceso=2;
                                    System.out.println("OKACCESO ES IGUAL: "+okacceso);
                                    usuarioconectadoOK=false;
                                    break;
                                }else{
                                    
                                    okacceso=3;
                                    System.out.println("Entro en error ok3"+okacceso);
                                    usuarioconectadoOK=false;
                                    
                                }
                            }
                    }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema al realizar la comprobacion");
            e.printStackTrace();
            }
       return okacceso;
 }
    
    public  void mostrarProductos(){
    
        listaProductos.removeAll(listaProductos);
        
        ResultSet rs3=null;
         conexion conex = new conexion();
         try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT nombre_producto, nick, descripcion, precio, categoria, img_producto, num_boletos, tiempo FROM productos JOIN usuarios ON productos.id_usuario=usuarios.id_usuario JOIN rifas ON productos.id_producto=rifas.id_producto;");
                    rs3=ps.executeQuery();
                    
                    while(rs3.next()) {
                        
                        Producto pro= new Producto();
                        
                        pro.setNombre_producto(rs3.getString(1));//El numero entre parentesis es el orden que ocupa el campo en la tabla de la BBDD
                        pro.setNick_usuario(rs3.getString(2));
                        pro.setDescripcion(rs3.getString(3));
                        pro.setPrecio(rs3.getFloat(4));
                        pro.setCategoría(rs3.getString(5));
                        pro.setImg_producto(rs3.getString(6));
                        pro.setNum_boletos(rs3.getInt(7));
                            DateFormat df = new SimpleDateFormat("dd-MMM-yy");  
                            String text = df.format(rs3.getDate(8));  
                        pro.setFecha(text);
                        pro.setPrecio_boleto(pro.getPrecio()/pro.getNum_boletos());
                        
                        
                        listaProductos.add(pro);
                       
                          
                    }
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema");
            e.printStackTrace();
            }
  
    
    
    
    }
    
    
   public  int InsertatRifa(String nom_producto, String precio_producto,String num_boletos,String categoria,String fecha_sorteo,String nombre_imagen,String palabras_clave, String usuario_sub){
   
         int ok=1;
       
         ResultSet rs3=null;
         conexion conex = new conexion();
         
         try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT id_usuario FROM usuarios WHERE nick='"+usuario_sub+"';");
            rs3=ps.executeQuery();
            
            
            while(rs3.next()) {
                id_usuario=rs3.getString(1);
            }
            System.out.println(id_usuario);
            
                        try {
                            
                             CallableStatement cstmt = conexion.conn.prepareCall("INSERT INTO productos (nombre_producto, id_usuario, precio, categoria, keywords, img_producto) VALUES ('"+nom_producto+"', "+id_usuario+", "+precio_producto+", '"+categoria+"', '"+palabras_clave+"', '"+nombre_imagen+"');");
                             cstmt.executeUpdate();
                          
                                    try {
                                      PreparedStatement ps1=conexion.conn.prepareStatement("SELECT max(id_producto) FROM productos ;");
                                      rs3=ps1.executeQuery();
                                      
                                        while(rs3.next()) {
                                             id_producto=rs3.getString(1);
                                         }
            
                                      
                                               try {
                                               CallableStatement cstmt2 = conexion.conn.prepareCall("INSERT INTO productos (descripcion)  VALUES ('"+id_producto+".txt') WHERE id_producto="+id_producto+";");
                                               cstmt2.executeUpdate();

                                                                try {
                                                                 CallableStatement cstmt1 = conexion.conn.prepareCall("INSERT INTO rifas (id_producto, num_boletos, tiempo) VALUES ("+id_producto+","+num_boletos+",'"+fecha_sorteo+"');");
                                                                 cstmt1.executeUpdate();


                                                                 }catch(SQLException e) {
                                                               System.out.println("ERROR!: Ha habido un problema en insert rifas");
                                                               e.printStackTrace();
                                                               ok=0;
                                                               }
                                                                
                                                  }catch(SQLException e) {
                                                 System.out.println("ERROR!: Ha habido un problema en insert descripcion");
                                                 e.printStackTrace();
                                                 ok=0;
                                                 } 

                                  
                                    }catch(SQLException e) {
                                        System.out.println("ERROR!: Ha habido un problema en select id_producto");
                                        e.printStackTrace();
                                        ok=0;
                                    }
                            
                            
                        }catch(SQLException e) {
                          System.out.println("ERROR!: Ha habido un problema en insert productos");
                          e.printStackTrace();
                          ok=0;
                        }
            
            
              }catch(SQLException e) {
                System.out.println("ERROR!: Ha habido un probleman en select id_usuario");
                e.printStackTrace();

                ok=0;
            }
            
       
         
         return ok;
         
       
   }
   
   public int DescripcionToFile (String descripcione){
       int ok=1;
       ResultSet rs3=null;
       conexion conex = new conexion();
       String nombre_descripcion;
       int n=0;
       
       try {
            PreparedStatement ps=conexion.conn.prepareStatement("SELECT max(id_product) FROM tabla;");
            rs3=ps.executeQuery();
            nombre_descripcion=rs3.getString(1);
            n=Integer.parseInt(nombre_descripcion)+1;
        
        }catch(SQLException e) {
            System.out.println("ERROR!: Ha habido un problema en select max id_producto");
            e.printStackTrace();
        }
        
        
        
        File f= new File("C:\\Users\\UROLALDE\\Desktop\\descripcion\\"+n+".txt");
       
        if(f.exists()){
			System.out.println("Existe");
	}
        else{
		System.out.println("No existia pero ha sido creado");
                try{
			f.createNewFile();
                        
                }catch(IOException e){
			System.out.println(e.getMessage());
                }
        }
        
        
        
        try{
        
            FileWriter flS=new FileWriter("C:\\Users\\UROLALDE\\Desktop\\descripcion\\hola.txt",true);
            BufferedWriter fS=new BufferedWriter(flS);
            
            if(!descripcione.equals("")){
			fS.write(descripcione);
            }
        
               
                    
        
      
            
        fS.close();
        
       }catch(IOException e){
			System.out.println(e.getMessage());
                        ok=0;
		}
        
        
      
        

        return ok;
   }
    
}
